Micron Document
rns.moscow 🟥 [git]

Node / public / RNode_Flasher_Old rns://8d583d150cea7bdc2360dd1759690ee3/public/RNode_Flasher_Old
Mirrored from https://git.rns.moscow/deuxyeux/RNode_Flasher_Old.git synced 21h ago



>RNode Flasher

A work-in-progress web based firmware flasher for Reticulum / RNode_Firmware.

• It is written in javascript and uses the Web Serial APIs.
• It supports putting relevant devices into DFU mode.
• It supports flashing firmware from a zip file.

At this time, it does not support flashing bootloaders or softdevices for the nRF boards.

How does it work?

I wanted something simple, for flashing RNode firmware to a nRF52 RAK4631 in a web browser.

So, I spent a bit of time working through the source code of adafruit-nrfutil and wrote a javascript implementation of dfu_transport_serial.py

Generally, you would use the following command to flash a firmware.zip to your device;

T282828
adafruit-nrfutil dfu serial --package firmware.zip -p /dev/cu.usbmodem14401 -b 115200 -t 1200

The nrf52_dfu_flasher.js in this project implements a javascript, web based version of the above command.

There was an existing package called pc-nrf-dfu-js, however this repo had been archived and didn't appear to support the latest DFU protocol.

How to use it?

• Open https://liamcottle.github.io/rnode-flasher/ in your web browser.
• Select your device.
• Put your device into DFU mode (for nRF52 boards)
• Select a firmware file and click flash.
• Once flashed, your device should reboot into the new firmware.
• For new devices that have never been provisioned, you should click "Provision" to configure the EEPROM.
• Every time you flash new firmware, you should also click "Set Firmware Hash".

│ Note: At this time, firmware hashes for RNode are not automatically configured.

What is needed to set up a new RNode?

│ Note: This is a technical overview of how the RNode device provisioning works. Most of this is
│ taken care of by the code base, and this section just makes it easier to understand what is going
│ on.

To set up a new RNode device, you will need to do a few things;

• Obtain supported hardware, such as a RAK4631
• Obtain an RNode firmware file
• Put your device into DFU mode
• Flash the firmware file
• Provision the EEPROM

Once the firmware is flashed to the device, you will need to provision the EEPROM;

• Set firmware hash in eeprom
• Collect device info
• T383838product
• T383838model
• T383838hardware_revision
• T383838serial_number
• T383838made (unix timestamp of device creation)
• Write device info to eeprom
• Create an MD5 checksum of the device info
• Write 16 byte device info checksum to eeprom
• Sign device info checksum with signing key to use as signature
• Write 128 byte signature to eeprom
• Write T383838ROM.INFO_LOCK_BYTE to T383838ROM.ADDR_INFO_LOCK in eeprom
• Read eeprom and validate checksums and signatures to ensure all is correct

TODO

• support configuring eeprom with device signatures and firmware hashes
• support flashing existing firmware files from api
• calculate on air bitrate based on tnc settings
• try using web-serial-polyfill to support flashing from Android device?

License

MIT

References

• https://github.com/adafruit/AdafruitnRF52nrfutil
• https://github.com/adafruit/AdafruitnRF52nrfutil/blob/master/nordicsemi/dfu/dfutransportserial.py
• https://github.com/markqvist/RNodeFirmware/blob/master/RNodeFirmware.ino
• https://github.com/markqvist/RNode_Firmware/blob/master/Framing.h
• https://github.com/markqvist/RNode_Firmware/blob/master/Utilities.h

Served by rngit 1.4.2 - Generated in 0.02s